import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        count: 0
    },
    getters: {
        num(state) {
            return '当前的数据是【' + state.count + '】'
        }
    },
    // 只有mutation才能修改state中的数据
    mutations: {
        add(state) {
            state.count++
        },
        addN(state, step) {
            state.count += step
        },
        subtraction(state, step) {
            state.count -= step
        }
    },
    actions: {
        addAsync(context) { //这个context相当于实例对象的Store
            setTimeout(() => {
                // 在actions中，不能直接修改state中的数据；
                // 必须通过contex.commit（）来触发某个mutation的方法
                context.commit('add')
            }, 1000);
        },
        addnAsync(context, step) {
            setTimeout(() => {
                context.commit('addN', step)
            }, 1000);
        },
        subtraction1(context, step) {
            setTimeout(() => {
                context.commit('subtraction', step)
            })
        }
    },
    modules: {}
})